# -*- coding: utf-8 -*-
# @Time    : 2019/3/1 11:04
# @Author  : z.t.b
# @Email   : zhtbin@163.com
# @File    : lengthOfLongestSubstring.py
# @Software: PyCharm
"""
给定一个字符串，请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。
示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。
示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke"，所以其长度为 3。
     请注意，你的答案必须是 子串 的长度，"pwke" 是一个子序列，不是子串。
"""


class Solution(object):


    def all_unique(self, str):
        char_set = set()
        for s in str:
            if s in char_set:
                return False
            else:
                char_set.add(s)
        return True


    def lengthOfLongestSubstring(self, str):
        str_len = len(str)
        exists_sub_str = set()
        ans = 0
        for i in range(str_len):
            for j in range(i+1, str_len):
                sub_str = str[i:j]
                if self.all_unique(sub_str):
                    ans = max(ans, len(sub_str))
        return ans


solution = Solution()
print(solution.lengthOfLongestSubstring("pwwkew"))

